ContentProvider 中做应用初始化

ContentProvider 中做应用初始化

在 ContentProvider 中做应用初始化

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
internal class DebugToolsProvider : ContentProvider() {

    override fun onCreate(): Boolean {
        Log.i(DebugTools.TAG, "[DebugToolsProvider onCreate]" +
                "run adb shell am broadcast -a club.jinmei.mgvoice.debug to install DebugTools")
        context.registerReceiver(object : BroadcastReceiver() {
            var installed: Boolean = false
            override fun onReceive(context: Context?, intent: Intent?) {
                if (!installed) {
                    DebugTools.init(context!!)
                    Toast.makeText(context, "debug tools初始化", Toast.LENGTH_SHORT)
                            .show()
                    installed = true
                } else {
                    Toast.makeText(context, "debug tools已开启了,不要重复初始化", Toast.LENGTH_LONG)
                            .show()
                }
            }
        }, IntentFilter("club.jinmei.mgvoice.debug"))
        return true
    }

    override fun query(uri: Uri, projection: Array<String>?, selection: String?, selectionArgs: Array<String>?, sortOrder: String?): Cursor? {
        return null
    }

    override fun getType(uri: Uri): String? {
        return null
    }

    override fun insert(uri: Uri, values: ContentValues?): Uri? {
        return null
    }

    override fun delete(uri: Uri, selection: String?, selectionArgs: Array<String>?): Int {
        return 0
    }

    override fun update(uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array<String>?): Int {
        return 0
    }

}
<application>
    <provider
            android:name=".DebugToolsProvider"
            android:authorities="${applicationId}.debugtools.autopilot"
            android:exported="false" />
</application>

使用 ContentProvider 初始化的库

Ref